A core, sometimes referred to as an “Intellectual Property (IP)” core, is a reusable unit of circuitry, logic, cell(s), integrated circuit layout design, or a combination of one or more of the aforementioned elements. A core may be specified programmatically in any of a variety of different formats and at a variety of different hierarchical levels. For example, a core may be specified as a synthesizable register transfer level (RTL) description, as a placed and routed portion of a bitstream, or as a lower level description specifying particular transistor layouts. Cores may be used as building blocks within circuit designs for various types of integrated circuits including, but not limited to, application specific ICs (ASICs) and programmable ICs such as field programmable gate arrays (FPGAs).
In many cases, cores have a fixed number of parameters. This is often the case with cores used with programmable ICs. In other cases, however, the number of parameters for a core may be unknown. In still other cases, the number of parameters for a core may be so large that the resulting core becomes unwieldy to parameterize and consumes significant storage space.